const path = require('path');
const resolve = dir => {
  return path.join(__dirname, dir)
};
// 线上打包路径，请根据项目实际线上情况
const BASE_URL = process.env.NODE_ENV === 'production' ? 'vue-admin/' : '/dist';
const IS_PROD = process.env.NODE_ENV === 'production' ? false : ['production', 'test'].includes(process.env.NODE_ENV);
module.exports = {
  lintOnSave: false,
  devServer: {
    proxy: {
      '/CSapi': {
        target: 'http://192.168.0.140:8085/',
        // ws: true,
        changeOrigin: true,// 允许websockets跨域
        pathRewrite: {
          "^/CSapi": ""
        }
      },
    },
    port: process.env.port
  },
  parallel: require('os').cpus().length > 1, // 构建时开启多进程处理babel编译
  // 指定对第三方依赖包进行babel-polyfill处理
  transpileDependencies: [],
  css: {
    // modules: false, // 启用 CSS modules
    extract: IS_PROD, // 是否使用css分离插件
    sourceMap: false, // 开启 CSS source maps?
    loaderOptions: {
      css: {
        modules: {
          auto: () => false
        }
      },
    } // css预设器配置项
  },
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  outputDir: BASE_URL, // 打包生成的生产环境构建文件的目录
  assetsDir: 'static', // 放置生成的静态资源路径，默认在outputDir
  indexPath: 'index.html', // 指定生成的 index.html 输入路径，默认outputDir
  productionSourceMap: false, // 开启 生产环境的 source map?
  lintOnSave: process.env.NODE_ENV !== 'production', // 生产环境禁止eslint-loader
  chainWebpack: config => {
    // 解决ie11兼容ES6
    // 移除 preload 插件（预加载）
    config.plugins.delete('prefetch');
    config.plugins.delete('preload');
    // 压缩代码
    config.optimization.minimize(true);
    // 分割代码
    config.optimization.splitChunks({
      chunks: 'all'
    });
    // 配置路径别名
    config.resolve.alias
      .set('@', resolve('src'))
      .set('@A', resolve('src/assets'))
      .set('@C', resolve('src/components'))
      .set('@img', resolve('src/assets/img'))
    //开启热更新
    config.resolve.symlinks(true);
  },
  configureWebpack: (config) => {
    if (process.env.NODE_ENV === 'production') {
      config.mode = 'production';
      config.performance = {
        hints:'warning',
        //入口起点的最大体积 整数类型（以字节为单位）
        maxEntrypointSize: 50000000,
        //生成文件的最大体积 整数类型（以字节为单位 300k）
        maxAssetSize: 30000000,
        //只给出 js 文件的性能提示
        assetFilter: function(assetFilename) {
          return assetFilename.endsWith(".js");
        }
      };
    }
  }
};

